{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Exam1</th>\n",
       "      <th>Exam2</th>\n",
       "      <th>Pass</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>34.623660</td>\n",
       "      <td>78.024693</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>30.286711</td>\n",
       "      <td>43.894998</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>35.847409</td>\n",
       "      <td>72.902198</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>60.182599</td>\n",
       "      <td>86.308552</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>79.032736</td>\n",
       "      <td>75.344376</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Exam1      Exam2  Pass\n",
       "0  34.623660  78.024693     0\n",
       "1  30.286711  43.894998     0\n",
       "2  35.847409  72.902198     0\n",
       "3  60.182599  86.308552     1\n",
       "4  79.032736  75.344376     1"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "data = pd.read_csv(\"examdata.csv\")\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib import pyplot as plt\n",
    "fig1 = plt.figure()\n",
    "plt.scatter(data.loc[:,'Exam1'],data.loc[:,\"Exam2\"])\n",
    "plt.title(\"Exam1-Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     False\n",
      "1     False\n",
      "2     False\n",
      "3      True\n",
      "4      True\n",
      "      ...  \n",
      "95     True\n",
      "96     True\n",
      "97     True\n",
      "98     True\n",
      "99     True\n",
      "Name: Pass, Length: 100, dtype: bool\n"
     ]
    }
   ],
   "source": [
    "#add lable mask\n",
    "#取通过的\n",
    "mask = data.loc[:,'Pass']==1\n",
    "print(mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZSU9Z3v8fdHRGniAuJyEDQwOQTXFkzjqCSOSqJx3IiJaEZzuLkmGKOjY2bUJrmuM04wOtcMN3G8Ro1kkmtCcNdRMajBcUy0EUQMcnBhECTSIiCENgJ+7x/PU03RVnXX9qz1fZ3Tp6qeruVbVd3P9/lt30dmhnPOOQewQ9IBOOecSw9PCs4557p5UnDOOdfNk4JzzrlunhScc85186TgnHOumycF55xz3TwpuEyRtExSl6SNRT8/ijmGf5T0sqQtkq6p4P4m6U89Yr48hlCLY/i0pAckdUp6T9LjkkbHGYPLhh2TDsC5GpxqZr9J8PVfAy4HvlXFYw4zs9ciiqcSg4AHga8DG4CrgAeAAxKMyaWQtxRcLkj6N0mzim7fIGmOAoMlPRweJa8Nrw8vuu/Tkv5J0n+FR/EPSRoi6ReS3pf0gqQRhfub2Qwze5Rg51pv3P8h6V+Kbv9K0p3h9U9JelLSGknvhvEMKrrvMkmXSVoYtkTukLSPpEclbZD0G0mDw5ifN7M7zOw9M9sM3AyMljSk3vfg8sWTgsuLvwdaJf0PSZ8DzgMmW1DHZQfgp8Angf2BLqBnl9PZwNeAYcCngOfCx+wBLAaujiju/wl8TdLxks4BxgGXhL8T8H1gX+BAYD/gmh6P/zLwBeDTwKnAo8B3gT0J3vfFZV73GOCPZramYe/E5YJ3H7ksul/SlqLbl5nZTySdCzxGcAT/t2a2AiDc8d1TuLOk64GnejznT83s9fD3jwIHFbqoJP0a+Mc6Y35R0kdFt88ys8fN7I+SvgXMAFqAiWa2IYz7NYKuKoBOSf+bjyen/2Nm74RxPgOsNrP54e37gAk9AwlbST8GvlPne3I55EnBZdHEUmMKZva8pDeAvYGZhe2SBhJ0l3wRGBxu3lVSPzPbGt5+p+ipukrc3qWSwCS9QtAiATjJzJ4Jrx/ey5jCwwQtlyVm9p9Fz7U3MB34HLArwZH/2h6PrSpuSXsBs4FbzOzuSt6Tay7efeRyQ9KFwM7A2wQDwQV/D4wG/tLMdiPoOoGge6ahzOxgM9sl/Hmm70cAcD1BF9VQSV8t2v59wIDWMO5zqSPmcHxhNvCgmV1f6/O4fPOWgssFSZ8G/gk4FtgEPC/pUTNbQHCU3QWsk7QHdY4PSOoP9CM4qNpR0gBgc1Gro5rnOoZgRtBhwEiCrrG5ZrYyjHt9GPcw4LI6Yt4NeBx41szaa30el3/eUnBZ9FCPOf/3AT8HbjCzl8xsKcFg679L2hn4IUF//bvA7wjGHerxE4Ik81Xge+H1r/XxmJd6xPzDcEf9M+AiM1sZdh3dAfxUkoBrgcMJEsMjwL11xPwlgkHsr/eIY/86ntPlkPwkO8455wq8peCcc66bJwXnnHPdPCk455zr5knBOedct0xPSd1zzz1txIgRSYfhnHOZMm/evHfNbK9Sv8t0UhgxYgQdHR1Jh+Gcc5ki6b/L/c67j5xzznXzpOCcc65bZElB0p2SVktaVLRtD0lPSFoaXg4u+t1USa9JWiLpxKjics45V16UYwp3EVR+/FnRtnZgjplNk9Qe3r5C0kEE9ewPJqgd/xtJn66lloxzrvls3ryZFStW8MEHHyQdSqoMGDCA4cOH079//4ofE1lSMLO5xWerCp1OULAMgvrxTwNXhNt/aWZ/Bt6U9BpwBMGJTpxzrlcrVqxg1113ZcSIEQRlo5yZsWbNGlasWMHIkSMrflzcYwr7mNkqgPBy73D7MOCtovutCLd9jKQpkjokdXR2dkYabFkLZ8LNh8A1g4LLhTP7foxzLjIffPABQ4YM8YRQRBJDhgypuvWUloHmUt9kyUp9ZnabmbWZWdtee5WcZhuthTPhoYth/VuABZcPXeyJwbmEeUL4uFo+k7iTwjuShgKEl6vD7SsIzj9bMJzgRCnpM+c62Ny1/bbNXcF255zLuLiTwoPA5PD6ZOCBou1nS9pZ0khgFPB8zLFVZv2K6rY751wMrrnmGm666aa6nyeygWZJdxMMKu8paQXB2a6mATMlnQcsB84EMLNXJM0E/gBsAS5M7cyj3YeHXUcltkfo/vkrufHxJby9rot9B7Vw2YmjmTi25LCLyxH/3l3cImspmNlXzWyomfU3s+FmdoeZrTGzCWY2Krx8r+j+15vZp8xstJk9GlVcdZtwFfRv2X5b/5Zge0Tun7+Sqfe+zMp1XRiwcl0XU+99mfvnr4zsNV3y/HuPzv3zVzJ+2pOMbH+E8dOebMhnumzZMg444AAmT55Ma2srX/nKV9i0aRPXXXcd48aN45BDDmHKlCkUTmw2ffp0DjroIFpbWzn77LMB+O1vf8uYMWMYM2YMY8eOZcOGDQDceOONjBs3jtbWVq6+etvZZK+//npGjx7N5z//eZYsWVL3e4D0DDRnR+skOHU67L4foODy1OnB9ojc+PgSujZv33Dq2ryVGx9vzB+BKy+KnUel/HuPRpTJdsmSJUyZMoWFCxey2267ccstt3DRRRfxwgsvsGjRIrq6unj44YcBmDZtGvPnz2fhwoXceuutANx00038+Mc/ZsGCBTzzzDO0tLQwe/Zsli5dyvPPP8+CBQuYN28ec+fOZd68efzyl79k/vz53Hvvvbzwwgt1xw8ZL4iXmNZJkSaBnt5e11XVdle74u6a3Vv686cPt7B5a3BkV9h5ALF04WThe89i91Zvybbe2Pfbbz/Gjx8PwLnnnsv06dMZOXIkP/jBD9i0aRPvvfceBx98MKeeeiqtra2cc845TJw4kYkTJwIwfvx4vvOd73DOOedwxhlnMHz4cGbPns3s2bMZO3YsABs3bmTp0qVs2LCBL33pSwwcOBCA0047ra7YC7ylkAH7DmqparurTc8jyHVdm7sTQkGcR+q1fu9xtW6y2r0VZbLtOQVUEt/+9reZNWsWL7/8Mt/85je71w088sgjXHjhhcybN4/PfOYzbNmyhfb2dm6//Xa6uro48sgjefXVVzEzpk6dyoIFC1iwYAGvvfYa5513XsnXawRPChlw2Ymjaenfb7ttLf37cdmJoxOKKJ9KHUGWEteRei3fe5w76qx2b0V5kLV8+XKeey4oxHD33Xfz2c9+FoA999yTjRs3MmvWLAA++ugj3nrrLY477jh+8IMfsG7dOjZu3Mjrr7/OoYceyhVXXEFbWxuvvvoqJ554InfeeScbN24EYOXKlaxevZpjjjmG++67j66uLjZs2MBDDz1Ud/zg3Ud9WzgzWIOwfkUww2jCVbF2HcG2roqsNdOzptKdfVwttFq+9yi7RnrKQvdWKZedOJqp97683efUqIOsAw88kBkzZnD++eczatQoLrjgAtauXcuhhx7KiBEjGDduHABbt27l3HPPZf369ZgZl156KYMGDeLKK6/kqaeeol+/fhx00EGcdNJJ7LzzzixevJijjjoKgF122YWf//znHH744Zx11lmMGTOGT37yk3zuc5+rO34AFUbCs6itrc0iPclOYfVy8WK1/i2RDyy7ZIyf9iQr+9ihtfTvx/fPODS1CXlk+yMlSwEIeHPayQ19rXKf17BBLTzbfnxDX6svixcv5sADD6z4/lGMhSxbtoxTTjmFRYsW9X3nGJX6bCTNM7O2Uvf3lkJvelu97Ekhd0odQfbfQewyYEfWbdqciRbavoNaSu6oo2jdRHnEHbWJY4el+ntMkieF3vjq5aaSh266OHfUefi8GmnEiBGpayXUwpNCbxJaveySk/UjyLh31Fn/vNzHeVLozYSrSo8pRLh62bl6+Y7a1cOnpPYmgdXLzjmXJG8p9CXm1cvOVSKLK4ldNnhLwbmMyepK4rybPn06Bx54IOecc07J33d0dHDxxRcDcNddd3HRRRdV9fwjRozg3XffrTvOvnhLwbmMiXOBmqvcLbfcwqOPPlr2fMhtbW20tZVcGpAq3lJwLmOytJI4ySqzvWrweda/9a1v8cYbb3Daaadxww03cPTRRzN27FiOPvro7pLWTz/9NKeccsrHHtvZ2cmXv/xlxo0bx7hx43j22WcBWLNmDSeccAJjx47l/PPPJ66Fxp4UnMuYrBRITG03VwTnWb/11lvZd999eeqpp7jggguYO3cu8+fP57rrruO73/1ur4+95JJLuPTSS3nhhRe45557+MY3vgHAtddey2c/+1nmz5/PaaedxvLly2uOrxrefeRcxmRlJXFqu7kirlSwfv16Jk+ezNKlS5HE5s2be73/b37zG/7whz90337//ffZsGEDc+fO5d577wXg5JNPZvDgwXXHVglPCs5lTFZWEqe2myviSgVXXnklxx13HPfddx/Lli3j2GOP7fX+H330Ec899xwtLR9v6UVRGrsv3n3kXAZNHDuMZ9uP581pJ/Ns+/GpSwgAu7f0r2p7bMpVJGhQpYL169czbFjwfdx111193v+EE07gRz/6UfftBQsWAHDMMcfwi1/8AoBHH32UtWvXNiS+vnhScM4BjR8ULneQm8DB7/YiPs/65ZdfztSpUxk/fjxbt/Z9fo7p06fT0dFBa2srBx10UPepOa+++mrmzp3L4YcfzuzZs9l///0bEl9fEimdLekS4JsEFX1/YmY/lLQH8CtgBLAMmGRmvabGyEtnO9ckCoPCPccp6ikTHmcZ72pLZ6fhPClxSX3pbEmHECSEI4APgcckPRJum2Nm0yS1A+3AFXHH51wzKayMLlVuu95B4TjLeFfNKxWUlUT30YHA78xsk5ltAX4LfAk4HZgR3mcGMDGB2FwKpHZue84UTxktp55BYT+NbDYlkRQWAcdIGiJpIPDXwH7APma2CiC83LvUgyVNkdQhqaOzszO2oF08Uju3PYcqOSd1PUf1E8cO4/tnHMqwQS2I4IxsUZ61LstnkYxKLZ9J7N1HZrZY0g3AE8BG4CVgSxWPvw24DYIxhUiCdN3iLryW2rntOdRXK6ARR/VxlfEeMGAAa9asYciQIQ2fxrl204e8s/4DPtz6ETv124F9dh/A4IE7NfQ1omBmrFmzhgEDBlT1uETWKZjZHcAdAJL+GVgBvCNpqJmtkjQUWJ1EbG6bnoOPhaN2ILJ/9NTObc+hcn3+EBzVp3HtQznDhw9nxYoVNLr3YNOHW1i3aTMfFR1+rhQMGtifgTulf5nXgAEDGD68uqm2ibwrSXub2WpJ+wNnAEcBI4HJwLTw8oEkYnPbJHHUnurByZwptzI6yi6eqPTv379sIbp6jJ/2ZMm/x2GDWni2/fiGv14aJJXq7pE0BNgMXGhmayVNA2ZKOg9YDpyZUGwulMRRe1ZKOORBuZXREOwM07xaOio9u0vLtaTy3HJNqvvocyW2rQEmJBBOLkTR95/EUXtWSjjkRc8+/yS6DNOi1HsXlFxrkeeWa/o7xVyfovpHTuqo3c8xnJxmHugv9d4NPpYYovwfSMMZ9bzMRQ709o9cj7inFLrkNfNAf7n3aBDL/0BapmN7SyEHovxHzvtRexqOzNKkmQf6y733uAaV09JK85ZCDmTlpCtpk5YjszQorCIv9KMXa5aB/qRXYKelleZJIQeS/mPOqqi63eqRRImPnuUuCv3o0Fxdhkl3l6bl4M67j3LAZ+zUJi1HZgVJzfwpN8Ca57n45STZXZqW6dieFHIi733/UUhb/3mcfcrFYynlasU0w+BymqTl4M6TgmtaaTkyK4ir5VLq3Aml+JhU/NJwcOdjCq5pJd2H3FNcfcqVVEf1Manm5S0F19TScGRWEFfLpbeWh8DHpJqcJwXnUiKuPuWk5+O7dPOk4FyKxNFySdtYiksXTwrONZm0zHJx6eRJwbkmlKaxFJcuPvvIOedcN08KzjnnunlScM45183HFJyrk5ffdnniScG5OjTz6StdPnn3kXN1SGP5befqkUhSkHSppFckLZJ0t6QBkvaQ9ISkpeHl4CRic64aaSu/7Vy9Yk8KkoYBFwNtZnYI0A84G2gH5pjZKGBOeNu5VEvLiVGca5Skuo92BFok7QgMBN4GTgdmhL+fAUxMKDbnKuZnvXN5E3tSMLOVwE3AcmAVsN7MZgP7mNmq8D6rgL1LPV7SFEkdkjo6OzvjCjvdFs6Emw+BawYFlwtnJh1R00hb+W3n6iWzcuddiugFg7GCe4CzgHXAr4FZwI/MbFDR/daaWa/jCm1tbdbR0RFluOm3cCY8dDFsLurD7t8Cp06H1knJxeVi51NjXaUkzTOztlK/S6L76PPAm2bWaWabgXuBo4F3JA0FCC9XJxBb9sy5bvuEAMHtOdclE49LRGFq7Mrw9JqFqbH3z1+ZdGguY5JICsuBIyUNlCRgArAYeBCYHN5nMvBAArFVL+mum/UrqtvuGu7++SsZP+1JRrY/wvhpTyayI/apsa5RYl+8Zma/lzQLeBHYAswHbgN2AWZKOo8gcZwZd2xV69l1s/6t4DbE13Wz+/DgdUttd5FLy+I1nxrrGiWR2UdmdrWZHWBmh5jZ18zsz2a2xswmmNmo8PK9JGKrShq6biZcFYwhFOvfEmx3kUvLEbpPjU2HNLQa6+UrmuuRhq6b1knBoPLu+wEKLn2QOTZpOUL3qbHJy8u4jtc+qkdaum5aJ3kSSEi58x3HfYSe1bOp5WnGVG+txiy9J08K9ZhwVenpoI3oulk4M+iGWr8iSDITrvIdfwql6XzHWTubWlrGYxolLa3GenlSqEdhJ93onXcaBrDrlLYjwKjiyeoRehrk5ci6IC2txnp5UqhXFF03vQ1gZyAppO0IMOp4snaEHoVakm5ejqwL0tRqrIcPNNcjqjUKaRjArkNaZuSkNZ68qXWANW8zpvJS8sRbCrWKsosnLQPYNUrbEWDa4smbWruB8nJkXSwPrUZvKdQqyjUKGV97kLYjwLTFkze1Jt28HFnnjbcUahVlF09UA9gxSdsRYNriyZtyA6w7SIxsf6TXMYY8HFnnjSeFWkXdxZPhtQdpm5GTtnjyplTSBdgaVmBOeqKBq07spbMbKdHS2V6y2rluxbOPdpC6E0KxYYNaeLb9+ASicz31VjrbWwq16quLxxefZUba1lRkUXE30Mj2R0rexwf2s8GTQj3KdfHkYPFZsyi1huGyWS9xzYOvsL5rsyeJGuRlEVez8tlHUUhD9VRXkVLTKTdvNdZ1bc50UbMkeXG+aEVdidWTQhQyvvismVTSpeEL3arjU02jE0clVu8+ikLGF581k3JdHT15f3h1fKppNOKoF+UthSg0evFZ0qf8zLFSXR2leH+4S4M4Vud7UohCI098Uxi0Xv8WYNsGrT0xNETPro7BA/vTfwdtdx/vD3dpEcfqfF+nkHY3H1KmK2o/uHRR/PE0AZ+i6tKq52w5CA5aqh2z8XUKWeaD1rHz/vCP80SZDnGszo89KUgaDfyqaNNfAFcBPwu3jwCWAZPMbG3c8aWOD1onLm87xGrfT9rOj1GvrH+fUR+0xD6mYGZLzGyMmY0BPgNsAu4D2oE5ZjYKmBPedhmvmNpT1HOsGy0vJ2MvqOX95Ol8FHn7PqOQ9EDzBOB1M/tv4HRgRrh9BjAxsajSpJGD1gnL4j9knnaIUNv7ydP5KPL2fUYh6TGFs4G7w+v7mNkqADNbJWnvUg+QNAWYArD//vvHEmTiMlwxtVgWz8mbpx0i1PZ+yq3lMGD8tCcz1f2S5u+zr26tuLq9+mwpSNpN0qdKbG+t54Ul7QScBvy6mseZ2W1m1mZmbXvttVc9IbiYpfkfspy8naCnlvfT21qOLLT2iqX1++yrFR1nK7vXpCBpEvAqcI+kVySNK/r1XXW+9knAi2b2Tnj7HUlDw9cdCqyu8/ldyqT1H7I3eavjU8v7KV7LUUqWul/S+n321a0VZ7dXXy2F7wKfCQeFvw78u6Qzwt+p/MMq8lW2dR0BPAhMDq9PBh6o8/ldyqT1H7I3eavjU+v7mTh2GM+2H1/2nz7Nrb1iaf0++2pFx9nK7mtMoV9RP//zko4DHpY0nKBLsSaSBgJfAM4v2jwNmCnpPGA5cGatz+/SKatnQMvbuoV63k8eymKn8fvs63ON83PvKylskPQpM3sdugeAjwXuBw6u9UXNbBMwpMe2NQSzkVyOpfEf0lXOz3cdjb4+1zg/976SwgX06CYysw2SvghkfzqMc64qWW3tpV1fn2ucn3tVtY8k7UZRIjGz9xoeURWaovZRo/lpQlMj6ytrXXbVXftI0vnAdUAX28YSjKBEhcsKP01oauStdITLj0pXNP8DcLCZjTCzkeGPJ4Ss8dOEpoavrE2PrJVeiVqlK5pfJ6hR5LLMK66mRhYX8uVRFC22rHcLVpoUpgL/Jen3wJ8LG83s4kiialZR9/d7xdXUyMPUzjxodOmVPHQLVtp99H+BJ4HfAfOKflyjxHGGtYxXXM1TMz+LC/nyqNEttjx0C1baUthiZt+JNJJm11t/f6NaC4XnyeDsozwcgRXzqZ3p0OgWWx66BStNCk+F1UkfYvvuo0SnpOZKXP39Ga24msUKq33xhXzJa/SisDx0C1baffQ3hOMKbOs68gUCjVSuX9/7+4F8HIG59Gl0LaQ8dAtW1FIws5FRB9L0Jly1/RoCyFR/f9TycATm0qmRLbY8dAtWfJIdSYcABwEDCtvM7GdRBNWUMtzfX7UaZll5zR2XFVnvFqx0RfPVwLEESeE/CM6F8J+AJ4VGymh/f1VqXFWdhyMw57KgotpHkl4GDgPmm9lhkvYBbjezU6MOsDde+yiDbj6kzFqJ/eDSRfHH41wT6q32UaUDzV1m9hGwJSyKtxqve+Rq4auqnUu1SpNCh6RBwE8IZh69CDwfWVQuv3yWlXOpVlFSMLNvm9k6M7uV4Ixpk83s69GG5nIp46uqncu7SgeazzOzOwDMbJmkfpKuNrNrow3P5U4zzbIqI+sF01z84vybqbT7aIKk/5A0NJya+jtg10gicvnXOilIBLsPDxLDnOsaW+MpxQrlOlau68LYVq4jy3WcXLTi/puptPvob4AZwMsEU1L/zsz+IZKIsmbhzGBGzTWDgssm2bnVJY7ifymVh4JpLl5x/81UlBQkjQIuAe4BlgFfkzSw1heVNEjSLEmvSlos6ShJe0h6QtLS8HJwrc8fmybeuX1MNcmxiU/24+U6XLXi/puptPvoIeBKMzsf+CtgKfBCHa/7r8BjZnYAwfqHxUA7MMfMRgFzwtvp1sQ7t+1UmxwjmpaahdLa5cpyeLkOV07cfzOVJoUjzGwOgAX+BZhYywuG6xyOAQoD1x+a2TrgdIIuKsLLmp4/Vj7nPlBtcoxgWmpW+urzUDDNxSvuv5lek4KkywHM7H1JZ/b4da1TUv8C6AR+Kmm+pNslfQLYx8xWha+3Cti7TExTJHVI6ujs7KwxhAbxOfeBapNjBNNSs9JX3+iqnC7/4v6b6bXMhaQXzezwntdL3a74BaU2gtlL483s95L+FXgf+FszG1R0v7Vm1uu4QuJlLnrW8YFg53bq9KaaYllT6YoGn3p0ZPsjlPpLFvDmtJNrfl7n8qi3Mhd9rVNQmeulbldqBbDCzH4f3p5FMH7wjqShZrZK0lCCUhrp5nPuA7WU/W5w8T8vre1cY/SVFKzM9VK3K2Jmf5T0lqTRZrYEmAD8IfyZDEwLLx+o5flj1wyVTfuSguTopbWda4y+ksJhkt4naBW0hNcJbw8o/7A+/S3wC0k7AW8QjE/sAMyUdB6wHOg5huHSLOHk6KW1nWuMikpnp1XiYwrOuUR4qZD61DOm4JxzqVKYflzoKixMPwY8MTRApesUXN54eQ6XcuUWI2Zl+nFWeUuhGdV4Skzn4tJba8BLhUTLWwrNyMtzuJTrrTXgpUKi5UmhGXl5DpdyvbUGvFRItDwpNCMvz+FSrrfWgJcKiZaPKTSjWlYgOxejvhYjThw7zJNARDwpNKMUrEB2rje+GDE5vnjNOeeaTG+L13xMwTnnXDdPCs4557p5UnDOOdfNB5qdSykv+uaS4EnBpVuDz9CWFV70zSXFu49c7aIuqleo0bT+LcC21WiKu3hfAsUDveibS4onBVebOHbYaajRlFBi8qJvLimeFFxt4thhp6FGU0KJyYu+uaR4UnC1iWOHnYYaTQklJi/65pLiScHVJo4d9oSrgppMxeKu0ZRQYvKiby4pPvvI1SaOonpJ12haOBM+/NPHt8eUmLzom0tCIklB0jJgA7AV2GJmbZL2AH4FjACWAZPMbG0S8bkK9LbDbuQ00tZJyUxB7Xl2uoKWPeCkG5piWqxrTkm2FI4zs3eLbrcDc8xsmqT28PYVkbxyk859b7hSO+y8nOqz1AAzwE6fyNb7cK5KaRpTOB2YEV6fAUyM5FXSMvc9r9IwjbQR0jDzybkEJJUUDJgtaZ6kKeG2fcxsFUB4uXepB0qaIqlDUkdnZ2f1r5yXnVZald2ZvhVvHPVKw8wn5xKQVFIYb2aHAycBF0o6ptIHmtltZtZmZm177bVX9a/sR4DRKrvTVLZaY2mY+dTE7p+/kvHTnmRk+yOMn/Yk989fmXRITSORpGBmb4eXq4H7gCOAdyQNBQgvV0fy4n4EGK0JVwEq8QvLVmusdRKcOh123w9QcHnqdB9PiEGh7tPKdV0Y2+o+eWKIR+xJQdInJO1auA6cACwCHgQmh3ebDDwQSQB+BBit1kkEvYMlZK011joJLl0E16wLLj0hxMLrPiUridlH+wD3SSq8/v8zs8ckvQDMlHQesBw4M5JXT3ruezPYfb/SYwjeGsukuEt4e92nZMWeFMzsDeCwEtvXABNiCSKque8+1TUQx8I2F4skSnjvO6iFlSUSgNd9ikeapqRmm0913aZUf/xhfxMkzBjLT2dKAuW5K5FEV47XfUqWl7lolN6mujZja6G4NZaXBW1RSfjz6a17KImunMJr+1nnkuFJoVF8qmt5njB7l+Dn01f3UFJdOV73KTnefdQoPtW1tIUzyy9c84QZSPCAoq/uIbn5xwYAAAt3SURBVO/KqV1W11p4S6FRfHD14wrdIuU0e8Is2H14YrO1+uoeaoaunChmV2X5HNueFBrFp7p+XLmicuAJs1iCBxSVdA/luSsnqp13by2wtH+WnhQaKakyz2nVW/eHrw7eJsEDistOHL3dThEa1z0U9/qGWkS1887yWgtPCi46ZbtF9vOE0FNCBxRRdQ9lpfskqp13ltdaNG9SaMRCM1+s1jsfZ8mEKLqHstJ9EtXOO8oWWNSaMyk0Yl64z73vm4+zNK1GH4FH1RUV1c47ywP0MitTvCwD2trarKOjo/oH3nxI+W6NSxdtv61ca6Ca53CuyYyf9mTJI/Bhg1p4tv34qp6rZ1cUBDvu759xaEN2ssUJZ9DA/pjB+q7NmdqRV0vSPDNrK/W75lynUOm88N5KV/hiNVevlJa2aIRGrm+IutTGxLHDeLb9eG4+awwfbP6IdV2bm7pkd3MmhUoXmvW20tQXq+VHEjvnnNfKmjh2GN8/41CGDWpBBC2Ekkf2FXz2cc3k8ZLdgeYcU6h0ALS31sAZt/kgah4kNTbUBKU/+hzArvCzj2smT5ankTZSc7YUKj2rVm+tAT8zVz4kdc5u736s+LOPq9RGuSSThWmkjdScLQWobF54Xy0KX6yWfUntnBMsbbGdJKdVV/jZxzWTJ8vTSBupeZNCJXxKZf4ltXNOwxqOpKdVV/HZx1FqI8vTSBupOaekOlfQc8cIwc45qq7A4iPzlsHBtq61yRxwJD2tOu7P3nXrbUqqtxRcc4uzNdhzJ9j1XrATPOO2ZHaCSY9rFN7zo1cEnwXAjs3Vf59GnhSci2tsKG0zjtIyrrGl6DPpes8rAyQssdlHkvpJmi/p4fD2HpKekLQ0vBycVGzORSLpI/OeJlwVtFSKxT2ukdTsL1dWklNSLwEWF91uB+aY2ShgTnjbufxI24LHNEyrTluidMl0H0kaDpwMXA98J9x8OnBseH0G8DRwRdyxuQzJWpXaNMw46inpadVp6cJy3ZJqKfwQuBz4qGjbPma2CiC83LvUAyVNkdQhqaOzszP6SF06ZbFMRBqOzNMmDV1Y9chh/arYWwqSTgFWm9k8ScdW+3gzuw24DYIpqQ0Oz2VF2gZtK5X0kXnaZHktUNLrPCKSRPfReOA0SX8NDAB2k/Rz4B1JQ81slaShwOoEYnNZ4X3R+ZHVRFnLgUkGujxj7z4ys6lmNtzMRgBnA0+a2bnAg8Dk8G6TgQfijs1lSNoGbV3zqfbAJCNdnmkqiDcN+IKkpcAXwtvOlZb1vmiXfdUemGRk+m2iScHMnjazU8Lra8xsgpmNCi/fSzI2l3I+aOuSVu2BSUa6PH1Fs8uurPZFu3yodpA8I9NvPSk451ytqjkwSeM6lRLSNKbgnHP5lZEuT28pOOdcXDLQ5ektBZcdOVw96lzaeEvBZUNOV486lzbeUnDZkJE53s5lnScFlw0ZmePtXNZ5UnDZ4GUtnIuFJwWXDV7WwrlYeFJw2ZCROd7OZZ3PPnLZkYE53s5lnbcUnHPOdfOk4JxzrpsnBeecc908KTjnnOvmScE551w3TwrOOee6eVJwrtl59VlXxNcpONfMvPqs6yH2loKkAZKel/SSpFckXRtu30PSE5KWhpeD447Nuabj1WddD0l0H/0ZON7MDgPGAF+UdCTQDswxs1HAnPC2cy5KXn3W9RB7UrDAxvBm//DHgNOBGeH2GcDEuGNzrul49VnXQyIDzZL6SVoArAaeMLPfA/uY2SqA8HLvMo+dIqlDUkdnZ2d8QTuXR1591vWQSFIws61mNgYYDhwh6ZAqHnubmbWZWdtee+0VXZDONQOvPut6SHT2kZmtk/Q08EXgHUlDzWyVpKEErQjnXNS8+qwrksTso70kDQqvtwCfB14FHgQmh3ebDDwQd2zOOdfskmgpDAVmSOpHkJRmmtnDkp4DZko6D1gOnJlAbM4519RiTwpmthAYW2L7GmBC3PE455zbxstcOOec6+ZJwTnnXDeZWdIx1ExSJ/DfNT58T+DdBoYTNY83OlmKFbIVb5ZiheaJ95NmVnJOf6aTQj0kdZhZW9JxVMrjjU6WYoVsxZulWMHjBe8+cs45V8STgnPOuW7NnBRuSzqAKnm80clSrJCteLMUK3i8zTum4Jxz7uOauaXgnHOuB08KzjnnujVFUsjiKUDDc07Ml/RweDvNsS6T9LKkBZI6wm1pjneQpFmSXpW0WNJRaYxX0ujwMy38vC/p79IYa4GkS8P/sUWS7g7/91IZr6RLwjhfkfR34bbUxCrpTkmrJS0q2lY2PklTJb0maYmkE2t93aZICmTzFKCXAIuLbqc5VoDjzGxM0ZzpNMf7r8BjZnYAcBjB55y6eM1sSfiZjgE+A2wC7iOFsQJIGgZcDLSZ2SFAP+BsUhhveA6XbwJHEPwNnCJpFOmK9S6C0woUKxmfpIMIPuuDw8fcEhYdrZ6ZNdUPMBB4EfhLYAkwNNw+FFiSdHxhLMPDL/x44OFwWypjDeNZBuzZY1sq4wV2A94knGSR9niL4jsBeDbNsQLDgLeAPQiKbT4cxp26eAmqMN9edPtK4PK0xQqMABYV3S4ZHzAVmFp0v8eBo2p5zWZpKdR1CtAE/JDgD/Sjom1pjRWCc2zPljRP0pRwW1rj/QugE/hp2D13u6RPkN54C84G7g6vpzJWM1sJ3ERQ+n4VsN7MZpPOeBcBx0gaImkg8NfAfqQz1mLl4isk5IIV4baqNU1SsDpOARonSacAq81sXtKxVGG8mR0OnARcKOmYpAPqxY7A4cC/mdlY4E+koDujN5J2Ak4Dfp10LL0J+7dPB0YC+wKfkHRuslGVZmaLgRuAJ4DHgJeALYkGVR+V2FbTeoOmSQoFZrYOeJqiU4ACpOgUoOOB0yQtA34JHC/p56QzVgDM7O3wcjVBn/cRpDfeFcCKsKUIMIsgSaQ1XgiS7Ytm9k54O62xfh5408w6zWwzcC9wNCmN18zuMLPDzewY4D1gKSmNtUi5+FYQtHQKhgNv1/ICTZEUlKFTgJrZVDMbbmYjCLoMnjSzc0lhrACSPiFp18J1gj7kRaQ0XjP7I/CWpNHhpgnAH0hpvKGvsq3rCNIb63LgSEkDJYngs11MSuOVtHd4uT9wBsFnnMpYi5SL70HgbEk7SxoJjAKer+kVkh7wiWmwphWYDywk2GFdFW4fQjCguzS83CPpWHvEfSzbBppTGStBH/1L4c8rwPfSHG8Y2xigI/x7uB8YnNZ4CSZGrAF2L9qWyljD2K4lOOBaBPw7sHNa4wWeITggeAmYkLbPliBJrQI2E7QEzustPuB7wOsEg9En1fq6XubCOedct6boPnLOOVcZTwrOOee6eVJwzjnXzZOCc865bp4UnHPOdfOk4FwZkrb2qFIa6cpnSY9JWleojOtcEnZMOgDnUqzLgtIocbmRYF3C+TG+pnPb8ZaCc1WQtHtYr350ePtuSd8Mr/+bpA4VnbMj3L5M0j9Lei78/eGSHpf0uqRvFe5nZnOADbG/KeeKeFJwrryWHt1HZ5nZeuAi4C5JZwODzewn4f2/Z8H5JFqBv5LUWvRcb5nZUQSraO8CvgIcCVwX27txrgLefeRceSW7j8zsCUlnAj8mOEFLwaSwdPiOBLXuDyIopQFBbRqAl4FdzGwDsEHSB5IGWVCo0bnEeUvBuSpJ2gE4EOgiOKEMYRGyfyCoodMKPAIMKHrYn8PLj4quF277wZlLDU8KzlXvUoLqn18F7pTUn+CMbn8C1kvah6DctXOZ40cozpXXEp6tr+Ax4E7gG8ARZrZB0lzgf5nZ1ZLmE1SKfQN4ttoXk/QMcACwi6QVwHlm9njd78K5KniVVOecc928+8g551w3TwrOOee6eVJwzjnXzZOCc865bp4UnHPOdfOk4JxzrpsnBeecc93+Pz1oAHJHiVmUAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#区分画点\n",
    "from matplotlib import pyplot as plt\n",
    "fig2 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,\"Exam2\"][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,\"Exam2\"][~mask])\n",
    "plt.title(\"Exam1-Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%% define X.y\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "X = data.drop(['Pass'],axis=1)\n",
    "y = data.loc[:,'Pass']\n",
    "X1 = data.loc[:,'Exam1']\n",
    "X2 = data.loc[:,'Exam2']\n",
    "print(type(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100, 2) (100,)\n"
     ]
    }
   ],
   "source": [
    "#数据大小\n",
    "print(X.shape,y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练模型\n",
    "from sklearn.linear_model import LogisticRegression \n",
    "LR = LogisticRegression()\n",
    "LR.fit(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1,\n",
       "       0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1,\n",
       "       0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,\n",
       "       1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1,\n",
       "       1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1], dtype=int64)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#预测结果\n",
    "y_predict = LR.predict(X)\n",
    "y_predict"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.89\n"
     ]
    }
   ],
   "source": [
    "# 评估模型表现 (准确率)\n",
    "from sklearn.metrics import accuracy_score\n",
    "accuracy = accuracy_score(y,y_predict)\n",
    "print(accuracy)\n",
    "#越接近1越好 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "passed\n"
     ]
    }
   ],
   "source": [
    "#预测\n",
    "#exam1=70 exam2=65\n",
    "y_test = LR.predict([[70,65]])\n",
    "print('passed' if y_test==1 else 'failed')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0     89.449169\n",
      "1     93.889277\n",
      "2     88.196312\n",
      "3     63.282281\n",
      "4     43.983773\n",
      "        ...    \n",
      "95    39.421346\n",
      "96    81.629448\n",
      "97    23.219064\n",
      "98    68.240049\n",
      "99    48.341870\n",
      "Name: Exam1, Length: 100, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "#评估模型表现2 \n",
    "#直接画图看边界曲线\n",
    "theta0 = LR.intercept_\n",
    "theta1,theta2 = LR.coef_[0][0],LR.coef_[0][1]\n",
    "\n",
    "X2_new = - (theta0 + theta1 * X1)/theta2\n",
    "print(X2_new)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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PmLatGmMHj2aYcOGMXny5NY/rOnTpzN06FDq6uq48MILAfjjH//I8OHDGT58OCNGjGD79u0A3H777YwePZq6ujpuuumm1s+85ZZbGDJkCJ///OdZu3ZtSfGbKmJrSnXIq0lp0JTfV2yTUuBJQR0fuHe7uP8UOBeY4ZbPACb4Hcvtc9bSsjOzE6ll525un1P6SXXt2rVMnjyZ5cuX0717d+666y6++c1v8tJLL7Fy5UpaWlp48sknAUgkEixdupTly5fz85//HIA77riDn/70pyxbtoznn3+empoa5s6dy7p161i0aBHLli1jyZIlLFiwgCVLlvDb3/6WpUuXMmvWLF56yVaENHmyNaXylkzU8z8XDs8oq21o5EfP/DWkiPwRSp+CiHQSkWXAZuAZVf0LcJCqbgJwb/tmee1kEVksIoubmppKiuPt5paCygtxyCGHMGbMGAAuvvhiXnjhBZ599lmOO+44jjrqKObPn8+qVasAqKur48tf/jL3338/nTt3BmDMmDF8+9vfZvr06TQ3N9O5c2fmzp3L3LlzGTFiBCNHjmTNmjWsW7eO559/ni9+8Yt069aN7t27c84555Qcv6kStqZUQc4d3r9dreF/5q2rqFpDKElBVXer6nBgAHCsiAzr6DVpr71bVUep6qg+ffqUFMfBPWoKKi9E2+GfIsI3vvENHn74YVasWMGll17aOmegsbGRyy+/nCVLlnDMMcewa9cuGhoauOeee2hpaeH4449nzZo1qCpTpkxh2bJlLFu2jNdee41LLrnE8/OMyUtMtoiMmkpegTXU0Ueq2gw8B5wBvCMi/QDc281+f/4144dQ06VTRllNl05cM35Iye+9fv16XnzxRQAefPBBTjzRGclw4IEH8sEHH/Dwww8DsGfPHt566y1OOeUUfvCDH9Dc3MwHH3zA66+/zlFHHcV3v/tdRo0axZo1axg/fjz33nsvH3zgtL5t3LiRzZs3M3bsWB599FFaWlrYvn07s2fPLjl+U0XqJsLVK2Fqs3NrCSFvyUQ9l409LKOstqGRF1/fElJEpesc9AeKSB9gp6o2i0gN8HngNuAJYBKQcG8f9zuWCSP6A07fwtvNLRzco4Zrxg9pLS/FkUceyYwZM7jssssYPHgwX//619m6dStHHXUUtbW1jB49GoDdu3dz8cUXs23bNlSVq6++mh49enDDDTfw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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘图\n",
    "fig3 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,\"Exam2\"][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,\"Exam2\"][~mask])\n",
    "\n",
    "plt.plot(X1,X2_new)\n",
    "\n",
    "plt.title(\"Exam1-Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%% md\n"
    }
   },
   "source": [
    "# 用二阶边界函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "X1_2 = X1 * X1\n",
    "X2_2 = X2 * X2\n",
    "X1_X2 = X1 * X2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "#处理数据\n",
    "X_new = {'X1':X1,'X2':X2,'X1_2':X1_2,'X2_2':X2_2,\"X1_X2\":X1_X2}\n",
    "X_new = pd.DataFrame(X_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#训练新模型\n",
    "LR2 = LogisticRegression()\n",
    "LR2.fit(X_new,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#预测\n",
    "y2_predict = LR2.predict(X_new)\n",
    "accuracy2 = accuracy_score(y,y2_predict)\n",
    "accuracy2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "63    30.058822\n",
       "1     30.286711\n",
       "57    32.577200\n",
       "70    32.722833\n",
       "36    33.915500\n",
       "        ...    \n",
       "56    97.645634\n",
       "47    97.771599\n",
       "51    99.272527\n",
       "97    99.315009\n",
       "75    99.827858\n",
       "Name: Exam1, Length: 100, dtype: float64"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#要先对点排序 否则画图会点点连线错乱\n",
    "X1_new = X1.sort_values()\n",
    "X1_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.06202446]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "63    132.124249\n",
       "1     130.914667\n",
       "57    119.415258\n",
       "70    118.725082\n",
       "36    113.258684\n",
       "         ...    \n",
       "56     39.275712\n",
       "47     39.251001\n",
       "51     38.963585\n",
       "97     38.955634\n",
       "75     38.860426\n",
       "Name: Exam1, Length: 100, dtype: float64"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#绘图\n",
    "theta0 = LR2.intercept_\n",
    "theta1= LR2.coef_[0][0]\n",
    "theta2= LR2.coef_[0][1]\n",
    "theta3= LR2.coef_[0][2]\n",
    "theta4= LR2.coef_[0][3]\n",
    "theta5= LR2.coef_[0][4]\n",
    "print(theta0)\n",
    "a = theta4\n",
    "b = theta5 * X1_new + theta2\n",
    "c = theta0 + theta1 * X1_new + theta3 * X1_new * X1_new\n",
    "X2_new_boundary = (-b + np.sqrt(b*b-4*a*c))/(2*a)\n",
    "X2_new_boundary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deXxU9dX48c/JvpCNHRIgiMgihC24AFqBKloVcUNbF6q0LtVi9akWtCq19SfWrjyttdaN1j4qVURxRREFUcsiCCggKAhhDUtCgARCcn5/zCQOYZLMZLY7M+f9euU1M3dm7j2ZTO65311UFWOMMQYgIdIBGGOMcQ5LCsYYY+pZUjDGGFPPkoIxxph6lhSMMcbUs6RgjDGmniUFY4wx9SwpmKgiIptEpFJEDnj8/CXMMfxaRFaJyFERmerD61VEDjaI+a4whOoZw0ki8oqIlIrIXhF5W0R6hTMGEx2SIh2AMS1woaq+G8HjbwDuAm7y4z0DVHVDiOLxRS7wKnAdUAHcB7wC9I5gTMaBrKRgYoKI/E1EXvR4/LCIzBOXPBF5zX2VvM99v8Djte+LyG9E5CP3VfwcEWkjIv8Wkf0iskRECuter6ozVPVNXCfXQON+Q0R+7/H4BRF5yn2/h4i8JyJ7RGS3O55cj9duEpE7RWSluyTypIh0EJE3RaRCRN4VkTx3zItV9UlV3auq1cAfgV4i0ibQ38HEFksKJlb8D1AkIj8UkTOAicAEdc3jkgA8DXQDugKVQMMqpyuBa4B8oAfwsfs9rYE1wP0hivt64BoRGSUiVwFDgdvczwnwENAZ6AN0AaY2eP+lwNnAScCFwJvA3UBbXL/3pEaOeyawQ1X3BO03MTHBqo9MNJotIkc9Ht+pqv8QkauBt3Bdwf9UVUsA3Ce+l+peLCIPAvMb7PNpVf3K/fybQN+6KioR+Q/w6wBj/lREaj0eX6Gqb6vqDhG5CZgBpAPjVLXCHfcGXFVVAKUi8geOT07/q6o73XEuBHap6nL345eB0Q0DcZeS/grcEeDvZGKQJQUTjcZ5a1NQ1cUi8jXQHphZt11EMnBVl5wL5Lk3Z4lIoqrWuB/v9NhVpZfHrXwJTEQ+x1UiAThPVRe67w9uok3hNVwll3Wq+qHHvtoD04EzgCxcV/77GrzXr7hFpB0wF3hUVZ/z5Xcy8cWqj0zMEJFbgFRgG66G4Dr/A/QCTlXVbFxVJ+CqngkqVT1ZVVu5fxY2/w4AHsRVRdVJRL7vsf0hQIEid9xXE0DM7vaFucCrqvpgS/djYpuVFExMEJGTgN8AZwGHgMUi8qaqrsB1lV0JlIlIawJsHxCRZCAR10VVkoikAdUepQ5/9nUmrh5BA4DuuKrGFqjqVnfc5e6484E7A4g5G3gbWKSqk1u6HxP7rKRgotGcBn3+XwaeBR5W1c9UdT2uxtZ/iUgq8Cdc9fW7gU9wtTsE4h+4ksz3gXvc969p5j2fNYj5T+4T9T+BW1V1q7vq6EngaRER4FfAYFyJ4XVgVgAxX4yrEfu6BnF0DWCfJgaJLbJjjDGmjpUUjDHG1LOkYIwxpp4lBWOMMfUsKRhjjKkX1V1S27Ztq4WFhZEOwxhjosqyZct2q2o7b89FdVIoLCxk6dKlkQ7DGGOiioh809hzVn1kjDGmniUFY4wx9SwpGGOMqRfVbQrGGANQXV1NSUkJVVVVkQ7FUdLS0igoKCA5Odnn91hSMMZEvZKSErKysigsLMQ1bZRRVfbs2UNJSQndu3f3+X1WfWSMiXpVVVW0adPGEoIHEaFNmzZ+l54sKRhjYoIlhOO15DOJy6Swo7yK37z2BXsPHol0KMYY4yhxmRT2V1XzxIcbeWHJlkiHYowxQTF16lR+97vfBbyfuEwKJ3XI4vQT2vDsJ99QU2vrSRhjTJ24TAoA157eja1llbzzxc7mX2yMiSmzl29l+LT36D75dYZPe4/Zy7cGvM9NmzbRu3dvJkyYQFFREZdddhmHDh3igQceYOjQofTr148bbriBuoXNpk+fTt++fSkqKuLKK68E4IMPPmDgwIEMHDiQQYMGUVFRAcAjjzzC0KFDKSoq4v77v11N9sEHH6RXr15897vfZd26dQH/DhDHSeHsvh3Iz03nyQ+/jnQoxpgwmr18K1NmrWJrWSUKbC2rZMqsVUFJDOvWreOGG25g5cqVZGdn8+ijj3LrrbeyZMkSVq9eTWVlJa+99hoA06ZNY/ny5axcuZLHHnsMgN/97nf89a9/ZcWKFSxcuJD09HTmzp3L+vXrWbx4MStWrGDZsmUsWLCAZcuW8fzzz7N8+XJmzZrFkiVLAo4f4jgpJCUmcN3wQpZs2seKLWWRDscYEyaPvL2OyuqaY7ZVVtfwyNuBX2l36dKF4cOHA3D11Vfz4YcfMn/+fE499VT69+/Pe++9x+effw5AUVERV111Fc8++yxJSa4hY8OHD+eOO+5g+vTplJWVkZSUxNy5c5k7dy6DBg1i8ODBrF27lvXr17Nw4UIuvvhiMjIyyM7OZuzYsQHHD3GcFACuGNqFrNQknvxwY6RDMcaEybaySr+2+6NhF1AR4Sc/+Qkvvvgiq1at4sc//nH9uIHXX3+dW265hWXLljFkyBCOHj3K5MmTeeKJJ6isrOS0005j7dq1qCpTpkxhxYoVrFixgg0bNjBx4kSvxwuGuE4KWWnJXHlKF95YtZ2tQfhCGGOcr3Nuul/b/bF582Y+/vhjAJ577jlGjBgBQNu2bTlw4AAvvvgiALW1tWzZsoWRI0fy29/+lrKyMg4cOMBXX31F//79+cUvfkFxcTFr165lzJgxPPXUUxw4cACArVu3smvXLs4880xefvllKisrqaioYM6cOQHHDzbNBROGFfLUok08s2gj95zfN9LhGGNC7M4xvZgya9UxVUjpyYncOaZXwPvu06cPM2bM4MYbb6Rnz57cfPPN7Nu3j/79+1NYWMjQoUMBqKmp4eqrr6a8vBxV5fbbbyc3N5d7772X+fPnk5iYSN++fTnvvPNITU1lzZo1nH766QC0atWKZ599lsGDB3PFFVcwcOBAunXrxhlnnBFw/ABS1xIejYqLizUYi+zc+n+f8sG6Uj6aMoqsNN8njjLGOMOaNWvo06ePz6+fvXwrj7y9jm1llXTOTefOMb0YNyg/oBg2bdrEBRdcwOrVqwPaT7B5+2xEZJmqFnt7fdyXFAB+dMYJvLZyOzOXljBxhO8TRxljotO4QfkBJ4FYFddtCnUGdsllaGEeTy/ayNGa2kiHY4yJQoWFhY4rJbSEJQW3iSNOoGRfJXNtMJsxJo5ZUnA7u28HurXJ4B8LbTCbMSZ+WVJwS0wQrh/eneWby1j2zb5Ih2OMMRFhScHDZUMKyE5LsqkvjDFxy5KCh8zUJH5wajfeWr2DLXsPRTocY0wUmT59On369OGqq67y+vzSpUuZNGkSAM888wy33nqrX/svLCxk9+7dAcfZHEsKDfxwWCEJIjy1yKa+MMb47tFHH+WNN97g3//+t9fni4uLmT59epij8p8lhQY65qRx4YDOzFyyhfLK6kiHY4wJhZUz4Y/9YGqu63blzIB2d9NNN/H1118zduxYHn74YYYNG8agQYMYNmxY/ZTW77//PhdccMFx7y0tLeXSSy9l6NChDB06lEWLFgGwZ88ezjnnHAYNGsSNN95IuAYaW1LwYuKI7hw8UsMLSzZHOhRjTLCtnAlzJkH5FkBdt3MmBZQYHnvsMTp37sz8+fO5+eabWbBgAcuXL+eBBx7g7rvvbvK9t912G7fffjtLlizhpZde4kc/+hEAv/rVrxgxYgTLly9n7NixbN4cnvORjWj2ol9+Dqed0JpnFm3iuuHdSU603GlMzJj3AFQ3mACzutK1vWh8wLsvLy9nwoQJrF+/HhGhurrpGod3332XL774ov7x/v37qaioYMGCBcyaNQuA888/n7y8vIBj84Wd7Rrx4zNOYFt5FW+s2h7pUIwxwVRe4t92P917772MHDmS1atXM2fOnPqpshtTW1vLxx9/XD819tatW8nKygJCMzV2c0KWFETkKRHZJSKrPbY9IiJrRWSliLwsIrkez00RkQ0isk5ExoQqLl+N7NWeE9pm8uSHG8NWl2eMCYOcAv+2+6m8vJz8fNe8Ss8880yzrz/nnHP4y1/+Uv94xYoVAJx55pn1jdZvvvkm+/aFZ/xUKEsKzwDnNtj2DtBPVYuAL4EpACLSF7gSONn9nkdFJDGEsTUrIUG4fkR3VpaUs2STDWYzJmaMvg+SG6ydkJzu2h4Ed911F1OmTGH48OHU1NQ0+/rp06ezdOlSioqK6Nu3b/3SnPfffz8LFixg8ODBzJ07l65duwYlvuaEdOpsESkEXlPVfl6euxi4TFWvEpEpAKr6kPu5t4GpqvpxU/sP1tTZjak8UsOwafMYWtiax6/1OsusMcYB/J06m5UzXW0I5SWuEsLo+4LSnuBE0TR19vXAC+77+cAnHs+VuLcdR0RuAG4AQp4501MSufq0bvxl/gY27j5I97aZIT2eMSZMisbHbBIIVEQamkXkHuAoUDfKw1tritcijKo+rqrFqlrcrl27UIVY75rTu5GcmMDjC74K+bGMMSbSwp4URGQCcAFwlX5bd1UCdPF4WQGwLdyxedM+K43LhxTw4rIStpfbOs7GOJV1CDleSz6TsCYFETkX+AUwVlU9Jxd6FbhSRFJFpDvQE1gcztiactN3eqAKf//AJsozxonS0tLYs2ePJQYPqsqePXtIS0vz630ha1MQkeeAs4C2IlIC3I+rt1Eq8I67/+0nqnqTqn4uIjOBL3BVK92iqs0324dJl9YZXDwon+cWb+YnI3vQPsu/D9kYE1oFBQWUlJRQWloa6VAcJS0tjYIC/7rahrT3UaiFuveRp027DzLq9+8zcUR37jm/b1iOaYwxodBU7yMb0eyjwraZXDQwn2c/2cyeA4cjHY4xxoSEJQU/3DLyRKqO1vDkhzattjEmNllS8MOJ7Vvxvf6dmPHRJsoOHYl0OMYYE3SWFPz001EncvBIDU8t2hTpUIwxJugsKfipd8dszunbgacXbWR/lS3CY4yJLZYUWuCno3pSUXWUf360KdKhGGNMUFlSaIH+BTmM7NWOJz7cyIHDRyMdjjHGBI0lhRaaNLonZYeqmWGlBWNMDLGk0EKDuuYxqnd7Hl/wtbUtGGNihiWFANxx9kmUV1bzlI1bMMbECEsKAeiXn8OYkzvw5MKNNm7BGBMTLCkE6PazT+LAkaP8fYHNoGqMiX6WFALUu2M2FxZ15plFm9hVURXpcIwxJiCWFILg9rNP4khNLX95b0OkQzHGmIBYUgiC7m0zuWJoF/7vv5vZvOdQ828wxhiHsqQQJLeN7klSovD7d9ZFOhRjjGkxSwpB0iE7jeuGd+eVFdv4fFt5pMMxxpgWsaQQRDed2YPstCQeedtKC8aY6GRJIYhyMpL5ycgTeX9dKR99tTvS4RhjjN8sKQTZD4cV0jknjYfeWEttbfSuf22MiU+WFIIsLTmRn4/pxaqt5cxZuS3S4RhjjF8sKYTAuIH5nNw5m9++tY6q6ppIh2OMMT6zpBACCQnCPd/rw9aySp62ZTuNMVHEkkKIDDuxLWf37cD0eevZVlYZ6XCMMcYnlhRC6P4L+6IoD8z5ItKhGGOMTywphFBBXgaTRvfkrc93MH/trkiHY4wxzbKkEGI/GnECPdplcv+rn1ujszHG8SwphFhKUgK/HtePzXsP8ej7X0U6HGOMaZIlhTAY1qMt4wZ25rH3v2Lj7oORDscYYxplSSFM7j6/D6lJCdz3ympUbaSzMcaZQpYUROQpEdklIqs9trUWkXdEZL37Ns/juSkiskFE1onImFDFFSnts9L4+ZheLFy/m9dXbY90OMYY41UoSwrPAOc22DYZmKeqPYF57seISF/gSuBk93seFZHEEMYWEVef1o2TO2fzwJwvqKiqjnQ4xhhznJAlBVVdAOxtsPkiYIb7/gxgnMf251X1sKpuBDYAp4QqtoCtnAl/7AdTc123K2f69LbEBOHBi/tTeuAwf3p3fYiDNMYY/4W7TaGDqm4HcN+2d2/PB7Z4vK7Eve04InKDiCwVkaWlpaUhDdarlTNhziQo3wKo63bOJJ8Tw8AuufzglK4889Emvti2P7SxGmOMn5zS0CxetnltjVXVx1W1WFWL27VrF+KwvJj3AFQ3mLaiutK13Ud3jelNbnoy976y2qbXNk2avXwrw6e9R/fJrzN82nvMXr410iGZGBfupLBTRDoBuG/rhvmWAF08XlcAOHPe6fIS/7Z7kZORzJTv9WHZN/t4cZlv77OTQ/yZvXwrU2atYmtZJQpsLatkyqxV9rc3IRXupPAqMMF9fwLwisf2K0UkVUS6Az2BxWGOzTc5Bf5tb8Slg/M5pbA1D725hn0HjzT5Wjs5RE4kk/Ejb6+jssEo+MrqGkct92oXK7EnKVQ7FpHngLOAtiJSAtwPTANmishEYDNwOYCqfi4iM4EvgKPALarqzDkhRt/nakPwrEJKTndt94OI8Otx/fje9IU8/NZapl1a1Ohrmzo5jBvktenFtNDs5Vt55O11bCurJCc9mYNHjlJd46riq0vGQFg+98Zm121u1l3P36Fzbjp3jukVknjrLlbqvpvh/nxMaISy99H3VbWTqiaraoGqPqmqe1R1tKr2dN/u9Xj9g6raQ1V7qeqboYrLbw17GgFcOB1yugDiur1wOhSN93vXvTpmMXFEd55fsoVl3+xr9HUtPTkY/zQskZVVVtcnhDrhvFLvnJvu13YIb6kyGkoyxn9OaWh2psZ6GgHcvhqmlrluW5AQ6tw2uicds9P45ezVHK2p9fqalpwcjP+8neS8CVcyvnNML9KTjx2uk56cyJ1jejX6nnCeqO1iJTZZUmhKEHoaNSczNYn7L+zLmu37+efH33h9TUtODsZ/vp7MwpWMxw3K56FL+pOfm44A+bnpPHRJ/yarZsJ5oraLldgUsjaFmBCEnka+OLdfR75zUjv+8M6XnF/UiQ7Zacc8X3cSCEc9cTzrnJvO1mZOnuFOxuMG5fv1d27sdwjFifrOMb2OaVMAu1iJBVZSaEqQeho1R0T41diTOVJTy29eX+P1NeMG5bNo8ig2TjufRZNHWUIIAW8lsuQEIS8j2ecr9UgLZ6myJSUZ43xWUmhKkHoa+aKwbSY/OasHf3p3PZcNKeA7J0VgYF6ci4USWbh/B39LMsb5JJqncS4uLtalS5eG9iArZ7raEMpLXCWE0fcF1LDclKrqGi743w85UHWUt28/k5z05JAcx0S/cHU7NbFJRJaparHX5ywpOMvKkjIufvQjLhrQmT9cMTDS4RgHajg+AFxVRE6surHk5UxNJQVrU3CYooJcbhl5IrOWb+Wt1TsiHY5xoGgZH2Aj8aOTJQUH+umoE+mXn809L69i94HDkQ7HOEy0jA+IluRljmVJwYGSExP4w/iBVFQdZfJLq2z5TnOMUI0PCPY8Ro11722u26+JLEsKDnVShyzuOrcX767Zyb//uznS4RgHCUW301BU9SSKtxnxG99unMG6pDrY9cO788GXpfzm9S847YTWnNg+K9IhGQcIZrfTuoZgb1fvgU66WNNICbex7cYZLCk4WEKC8PvLB3Dunxcy6bkVvHzLMFKTYm7p6uNYj5XmBWN8gLdeTA0F0k6R38jo6nybBsPRrPrI4dpnp/HwpUV8sX0/j7wV/ga6cM+Xbz1WwseXCQADaaeIlTm74m3NCEsKUeDsvh249vRuPPHhRt5buzNsx43ECdp6rIRPc6WAQE/gsTANRjxepFj1UZS4+3t9WLJpH7e/8Bmv/XQEXVpnhPyYkVjcJ1q6W8aCpiYATBQ5Jhm39O8dbdNgNKy6PHj4aNwtcNVsSUFEskWkh5ftjS8VZoIuLTmRx64eTK0qN/97GVUNvqihKOJG4gRt0zGHj9cJABOF5ASpbwyOhyvjOt5KBWWV1V5fG8sXKU0mBREZD6wFXhKRz0VkqMfTz4QyMHO8bm0y+dMVA1m9dT/3zl5dP34hVEXcSJygw10PHW/1xZ68Ve9kpiRRXRu51eYiyddFliB0/wNO+D42V1K4GxiiqgOB64B/icgl7uess3EEjO7TgZ+OOpH/LCvh+SVbgNDVw0eioTCc9dDxWF/cUMMp2cvj8Mq4jq+/Y6j+B5zyfWyuTSFRVbcDqOpiERkJvCYiBYB1No6Qn333JFZsKeP+Vz6nb6fskFXzRGoq6XDVQ0eizaQ5keqOW3fcxv6p46H6rrE2lryMZDJSkkL+N3HK97G5pFAhIj1U9SsAVd0uImcBs4GTQx2c8S4xQZh+5SAu+N8P+cm/P6VDdho79lcd97pg/CNHW0OhP5zWqN1w3EDdlSK0vKG3qWPVJZ/cjGQOVB09rtqoTjR2I22JxlaSu//Ck8PyP+CU72Nz1Uc306CaSFUrgHOB60MVlGleXmYKf7t6MKUHDpOTnkxa0rF/ynj5Rw6E0xq1w9Udt2E1xb5D1Y0mhGjsRtpSke5C65TvY5MlBVX9zPOxiGR7vOfNUAVlfFNUkMsDY09m8qxVnN23A19s22+jgP3gtDWGw3Wl6GuDqgCLJo8K6rGdLpIlY6d8H30apyAiNwIPAJV825agwAkhisv46MpTurJ8cxkvLN3CP64t5uy+HSIdUtRw2vKbjdVpB/tK0dckEw/tCE7ilO+jTyuvich64HRV3R36kHwXiyuvtURVdQ2XP/YxG3cfZNZPhnFSB5s4LxqFa0W14dPea3b6aqeu5GaCIxgrr30FHApeSCaY0pITefzaIaSnJPLDpxazvTz2uw/GonDVaTc2aC03PTlqp6MwweNrSWEQ8DTwX6B+KTBVnRS60JpnJYVjfb6tnCv+/gn5uenMvPF0cjKSIx2ScSibiTa+NVVS8DUpLAY+BFYBtXXbVXVGsIJsCUsKx/tow25++PQSBnbJ5Z8TTyEtOfan2jbG+KeppODrhHhHVfWOIMZkQmTYiW35wxUD+Olzy7nt+eU8etUQEhNs8Hko2VW3iSW+tinMF5EbRKSTiLSu+wlpZKbFLijqzH0X9OXtz3dy3yurbY3nEHLK1ATGBIuvJYUfuG+neGxrcZdUEbkd+JF7H6twzauUAbwAFAKbgPGquq8l+zdw3fDu7Ko4zN/e/4oO2WlMGt0z0iHFJKdMTWBMsPiUFFS1e7AOKCL5wCSgr6pWishM4EqgLzBPVaeJyGRgMvCLYB03Ht01phe79h/mD+98SbusVL5/StdIhxRznDI1gTHB4vMiOyLSD9eJO61um6r+M4DjpotINa4SwjZcpZCz3M/PAN7HkoJvVs6EeQ9AeQnkFMDo+6BoPCLCtEv7s/fgYe55eRVtW6Xa4LYgC9eAM2PCxac2BRG5H/hf989I4LfA2JYcUFW3Ar8DNgPbgXJVnQt08JiRdTvQvpFYbhCRpSKytLS0tCUhxJaVM2HOJCjfAqjrds4k13YgOTGBv141mP4Fudz6f5+ydNPeyMYbY5y0DrET5uI30c/XhubLgNHADlW9DhgApLbkgCKSB1wEdAc6A5kicrWv71fVx1W1WFWL27Vr15IQgmvlTPhjP5ia67p1n4zDZt4DUN3gSrW60rXdLSMliad/OJT83HQmzljKlzsrwhtjDBs3KJ9Lh+STKK4eXokiXDok/PPnWIO3CRZfk0KlqtYCR92T4u2i5fMefRfYqKqlqloNzAKGATtFpBOA+3ZXC/cfPs1cpYdFeYlP21tnpjDj+lNISUpggo16DprZy7fy0rKt9ctX1qjy0rKtYT8Zh2uGVdO0WCit+ZoUlopILvAPYBnwKbC4hcfcDJwmIhkiIrhKIGuAV4EJ7tdMAF5p4f7Dx4er9JDLKfB5e5fWGcy47hQOVB3l2icXs+fAYS9vNP5wysnYGrwjL1ZKaz4lBVX9iaqWqepjwNnABHc1kt9U9b/Ai7gSyyp3DI8D04Cz3ZPvne1+7Gw+XqW3iK/VUqPvg+QGjZrJ6a7tXvTtnM0/JhSzZd8hrnriv+w9eCTwWOOYU07GTpmL31+xcGVdxykXCIHytaF5Yt19Vd0EfO5ufG4RVb1fVXuraj9VvUZVD6vqHlUdrao93bfObxH14yrdL/5USxWNhwunQ04XQFy3F053bW/EaSe04Ylrh7Jx90F+8I9P2FVx/KptgXLaP3uo4nHKydhJDd6+ipUr6zpOuUAIlK/VR6NF5A33iOZ+wCeAzc/c8xwaLEzX5FW6z/ytlioaD7evhqllrtsmEkKdET3b8uSEoWzee4jLH/uYLXuDNwmu0/7ZQxmPU07GkV41rCVJN1aurOs45QIhUL5WH/0A19iBVcAbwM9U9eehDMzxVs6Ez/4PjlnqXGDAD3w6KTcplNVSHkb0bMuzPzqVskPVXPbYR0HrleS0f/ZQxhPpk3HDWBZNHsXGaeezaPKosCaEliTdWLmyruOUC4RA+bryWk/gNuAloA9wjYgsV9X4XWPB29U8CuvnBr7vnAJ31ZGX7UE2uGseM288nWue/C/j//4xT/9wKIO65gW0T6f9s4c6nkgu4egEjSXd/5n5Gbe/sKLRSQJjbeCfU1ZOC5Sv1UdzgHtV9UbgO8B6YEnIoooGobya97PxOFC9Ombx4k3DyE5L5qon/suH6wNbYM9pxWinxRNrGkuuNapNlhxi5craU6RKa8Hka1I4RVXnAajL74FxoQsrCoSqkRla1HgcqK5tMnjxptPp2jqD659Zwlurt7d4X077Z28uHqc1ikcbX5Krt+o6J1W9mW81uciOiNylqr91379cVf/j8dz/U9W7wxBjoyK6yE5dDyHPKqTk9G9P3o3MR+R05Yeque6ZxazYUsa0S4oYP7RLi/bjtDUGGovH27rIyYlCZkoS5ZXVjojd6bx9ht4IsHHa+eEJyjSpxSuvicinqjq44X1vjyMh4iuvNXbiby5hONyhI0e58V/LWLh+N788vw8/OqOlg9edzxaxDw7PpJsgUj/C21N+bjqLJo+KQHSxJRgXXIGsvCaN3Pf2OP4Ujfd+km+qS2kUJIWMlCSemFDMHS98xm9eX0PZoWr+55yTEIm9P88kWDUAABvVSURBVLkvjc22PkLzPBvbvZUcor2twCkafrZ17TVA0L6fzbUpaCP3vT02dYLdCB2BSfdSkxKZ/v1BfP+ULvxl/gbumPkZVc1UD0QjXxubo7WbZCRYW0HohKO7d3MlhQEish9XqSDdfR/347TG3xbngtmltGFVVN3oZgh5qSMxQfh/F/enU046f3jnS74uPcDfrymmY07s/OnvHNPLp/rweO+p5G+VRbx30w2VcHT3brKkoKqJqpqtqlmqmuS+X/c4OWhRxJpgdimN8KR7IsKk0T15/JohbNh1gAv/8iGfbo6dVVIbXtXmZSSTnHBsNVlyonDw8NG47Z3ktBHq8Swc3aubbGh2uog3NDclWL2PpubivaZOXNNahNG6HRX8+J9L2VFexYMX9+PyYv97JjmtV5I3njHmZiRzoOoo1bXf/g2iveHZ379BY43x0dpwHA3fwcY01l7j7/exxb2PnM7RSSFY/tivkaqoLq55jsJs38Ej3PrcpyzasIfrhhdyz/f6kJTo23CXYH2hwykWT4j+/g26T3690QbE/Dg9qYaCr8kq1L2PfB28ZiIlzKObm5OXmcKM607huuGFPL1oEz98egllh3ybfttpcyL5wmlTdgSqJX+Dpqomoq0qyanfQV+q6OoGWd7+wgoA/njFwJCMmrak4HQRGN3cnKTEBO6/8GR+e1kRizfu5aK/LuKLbfubfV80nmBjbYqMlvwNvI0I9+SEk6qvnPodbC5ZhbNdx5JCNGjB1NjhML64C8/dcBqVR2q4+NFFPL94M01VR0bjCdZpU3YEqiV/A8/G+MZE+qTqK6d+B5tLVuEs4VhSMAEZ0i2PN247g6GFrZk8axU/e2EFFVXVXl8bjSfYWOtz39K/Qd1Eb40lhkifVH3l1O9gc8kqnCUcn6bONjEkBHMytW2VyozrT+HR+Rv407z1LN9cxvTvD2Jgl9xjXhetUwuHqs99JHrBBPo38DauwwknVV859TvY3OcazmnGrfdRPAnDnExLN+3ltudXsHN/FXeccxI3ntmDxITYmx4jUE7uBdOcaO7S6Y1Tfp+m4gj298W6pBqXMHVvLT9Uzd0vr+L1VdsZWpjH7y8fSNc2GUHbfyyIta6u0SoUyTlUSSaY+w1kQjwTTqGebjtMy3zmZCTzlx8MYtSn7Zn66uec9+cF/PKCvlw5tEtAk+o55YouGJzaCybeNNWA25LvVignrAvX1CHW0OwUdVU75VsA/XaOo2BOfhfKhYEaEBEuHVLAW7efyYAuuUyZtYprn1rc7DTVjYm1qRac2gsm3gQ7OTt1HIQ/LCk4RTjmOIrAQLj83HSenXgqD1x0Msu+2ceYPy7g2U++obbWv2rLWPhn8+TUXjDxJtjJORZKgJYUnCIcVTsRGgiXkCBce3ohb912JgO65PDL2au58h+f8FXpAZ/3EQv/bJ5iratrtAp2co6FEqC1KThFMKfbbkpjCwOFQdc2GTw78VT+M/tlfrO4hPN+v5ObMj/g5vNPJ31w0zGFs0teuNj00pEX7C6q0d5lF6z3kXNE+RKePnP/nruOpPCb6qt5tXY4+bKbe0e0Ysz3Lmm0ITqau3Ca+BINHSKsS2q0CHXvIydo0C32k9re3F/9Q9ZpV87o2ZapY0+mR7tWXt8aDf9sxkQDSwrGObysD1Gtifyr5mz+mHg9VUdrmDjiBH466kQyU61205hQsHEKxjm8tJ0kSw3XZy3mwp/8k4ffWstjH3zF7OVbmXxeb8YO6ExCjI2IthKP8Vc4vzPW+yhQK2e6qkSm5rpugzmuIBaNvg8SvKzkeuQA7Ta+wu8uH8BLNw+jbVYKP3thBeMeXcQnX+8Jf5whEmvjLUzohfs7E5GkICK5IvKiiKwVkTUicrqItBaRd0Rkvfs2LxKx+SUcA86iha/JsWg8pGYdv73mSP2YjCHd8nj1lhH8YfwASisOc+XjnzDxmSWs3dH8mg1OF2vjLUzohfs7E6mSwp+Bt1S1NzAAWANMBuapak9gnvuxs4VjwFk08Dc5Vu7zvt1jTEZCgnDJ4ALm//ws7hzTi8Wb9nLenxdyxwsr2LL3kNe3161M1X3y6wyf9p4jr75jbbyFCb1wf2fCnhREJBs4E3gSQFWPqGoZcBEww/2yGcC4cMfmtzDNJeR4/iZHP6bbSEtO5JaRJ7LwrpHccOYJvL5qO6N+/z53v7zqmHEL0VItEwuDm0x4hfs7E4mSwglAKfC0iCwXkSdEJBPooKrbAdy37b29WURuEJGlIrK0tLQ0fFF7E8a5hBzN3+TYguk2cjNSmHJeHz64cyRXDu3Ki0tLOOuR+fxy9iq2lVVGTbWMTW9h/BXu70wkkkISMBj4m6oOAg7iR1WRqj6uqsWqWtyuXbtQxeibCMwl5Ej+JscAptvomJPGr8f1Y/6dZ3F5cRdeWLKF7zwyv9GJ9pxWLWPTWxh/hfs7E/ZxCiLSEfhEVQvdj8/AlRROBM5S1e0i0gl4X1WbTIWOGKcQDwPOmhPB0dgl+w7x+IKv+efH33h93tYniE3WrTcwjhqnoKo7RGSLiPRS1XXAaOAL988EYJr79pVwx9YiEZxLyDHqfv8IJMeCvAweuKgfJ7ZrxQOvfcFRj9lXUxIT+Pk5J4U8BhNeoVyzwERoRLOIDASeAFKAr4HrcFVlzQS6ApuBy1V1b1P7cURJIVrFYAln9vKtPPzmWrbvryJBoFbhpA6tmDiiOxcNzCetQb2scbbGSgO2al3gbJoLc6w4mHzvyNFaXlu5jScWbuSL7ftpk5nCNad34+rTutG2VWqkwzPNaGoCxNtfWIG3s5YAG6edH7YYo5klBXOsMK3V7ASqysdf7+HJhRuZt3YXKYkJnNe/I1ef1o3ibnkBLQ9qQqep0gBgJYUAOapNwThAHI2vEBGG9WjLsB5t2bDrAM9+8g0vLSvhlRXb6N0xi6tO68bFg/JpZZPvOUpTA7b+eMXAqF+zwMls7qN4FKfjK05s34qpY0/mv/eMZtol/UlMEO6dvZpTH3yXu19excqSMqK55BxLmhqwZd16Q8uqj+JRHLQp+EJVWbGljGc/2czrq7ZRVV1L745ZjC/uwrhB+bTOTIl0iHHLFlUKLWtTMMeLwd5HgSivrGbOZ9v4z9ItfFZSTnKiMLJXey4dUsDIXu1JSbJCdbjZWITQsaRgjB/W7tjPi0tLmL1iG7sPHCY3I5nz+3fiooH5FHfLC9v6DnZSNKFiScGERjhKGxEs0RytqWXh+t3Mmv8x73xTSxUpdEwo53s9Mzh/1HcY3DU3ZL2XrPrEhJL1PjLB17Bdom66bAjeSTscx2hCUmICI4+8z8i9kziQqsyrHcxrNafx7LoBPLXuI/Jz0zm/qBPn9+9EUUFOUBNEUxP8WVIwoWQlBdMy4Rjr4ITxFF5i2K/pvJt6Nq91nsTC9aVU1yhdWqfzvX6dOLtvBwZ1zSMxwCqm7pNftwFaJmSspGCCLxxjHZwwnsLLsbKlkkuOzOGSH/6L8kPVvP3FDl5buZ2nFm3k7wu+pnVmCmf1asfZfTpwxkntWjQGonNuutcBWrbuggk1SwqmZXIKGrmKD+JYh3AcoykrZ4IkgNYc/5w7hpyMZMYXd2F8cRf2V1Wz4MtS5q3Zxbw1u5j16VZSEhM4rUcbvtunPaP7dKgfkducO8f0sgFaJiLis/rIumMGrqmxDhCczzeS4ym8HduPGI7W1LLsm328u2Yn767ZxcbdBwHo0ymb7/Zpz8je7RlQkNtkNZP1PjKhYr2PPNnAreDxllzBy8lUoPh6uOAPwTlGOP5OjbVnSCJc/JjfMXxVeoB5a3by7he7WPrNXmoVctKTGdGzLd/p2Y4RPdta1ZAJG0sKnpzQeBnLGvt8Ebjk8ehJvFNzobGm3qllAe1638EjLNywmwVflvLBl6WUVhwGoEe7TEac2JbhJ7bltB5tyE5LDug40cxKSaFlDc2enNB4Gcsa/RzVdcUfLUkhhO0ZeZkpjB3QmbEDOqOqrNtZwYfrd7Ng/W5eWLqFGR9/Q4JA//wcTuvRhtNPaMPQwtZkxsmkfbaITmTFx7fMU6QbL2NdY58vRFfiHX2f92rGIK+/LSL07phN747Z/OiMEzh8tIblm8v46Ks9fPzVbp76cCN//+BrEhOEfvk5nNq9NacUtqa4MI/cjPDMzRTuq3YboxFZ8Vd9FMo2BWvAdn0Gs27Aa9WLJILWRs9n44C/56EjR1n2zT4Wb9zLfzfuZcWWMo4crQWgd8csigvzKO7WmiHd8ijISw/6COtIjKy2MRqhZ20KDYXin90asL/12h2w9Cm818m7xetn0xgfv5NV1TV8tqWMxRv3snjTXpZvLuPA4aMAdMhOZUi3PAZ3zWNQ1zxO7pzt0xKkTZUEIrH0pS23GXqWFMLBGrCPVX+Sa6QqCeL3s2kogAuKmlpl3Y4Kln2zl6Xf7GPZN/so2efaT3Kiq2pqQJccBhTkMqBLLj3atTqmG2xzJYFIXLXbvE+hZw3N4WAN2MeqO5k11tcf4vezaWjeA8d/RtWVPjXMJyYIfTtn07dzNtecXgjArv1VfLq5jBVbylhZUsbs5dt49pPNAGSmJNK/4Nsk8dAba5qsv4/EyOq6E3+42jFC1WYSrT2oLCkEizVgH8/byc5TPH82noJ8QdE+O41z+3Xk3H4dAaitVb7efYDPtpTzWUkZn5WU8/SiTRypqW10H3WJIJCR1YGcFMcNyg/LCTRUPZ2iuQeVJYVAeNYDp+dBYgrUHPn2+RD0VokqTZ3U4v2z8RTiC4qEBOHE9lmc2D6LS4e49nn4aA3rdlRw7ZOLKausPu49Alz86CL6dMrm/P6deP/LXew+cIR8H0/u0XJSDFVPp2juQRW/y0mtnOlqB5ia67pdOdP/98+Z5P5nVqjcC6qQ3hoQV315vDekNnZSk0T7bDyNvs+VJD2FOGmmJiVSVJDL1LEnk96gMTo5UTjzpHakJCbw+srtvPhpCbsPuC52ROC1ldt45O21vPrZNtbtqKjvDeWpqZOik2zzUjXW1PZI7zcc4rOk4M88/Y31CvFWNVJbDSmZ8IuNof8dokFjff0tIRyr7rOIQPfX5urvVZXt5VWs2b6fNdv3s3ZHBet2VDB/XSk1ta4m6KQEoXvbTE7qkEXPDq3o2T7LazsEtPykGKr6+cbaTBRXL6iWHieaZ7mNz6Tga8NeU8nDGpabF8GTXVRwwDgIaLr+XkTonJtO59x0RvfpUL/98NEavtp1kPW7XEniy50HWL2tnDdWb6epDo1tWqWw9+ARWme6B9758BmEsirKW5tJnUCOE82z3MZnl1Rf57VpqpspWBfUWBGJk3OMjmupPFLD17sP8PziLTy3eDNHa72fX3Izkjkho4oTyj7mBLZwguygUHbQLWU/6WN/d8xnEOpxC3WlkMZKNy09jpN7H1mX1IZ8bdhrqjRwyeNhmQbBhFiklvwMoBuqk6WnJHJy5xx+PS6HId3y6k+KnXLSuG54d3q0z+Tr0oN8vfsgX386nwVHT+ZFRny7gyPQ8flyCj/5mO5tM+naOjPoVVEN1ZWUGhuT0dLjhKsHVbDFZ1LwdV6bppKHVY3EhnCfnJsb1Bfu6scQlpIaOymO6u2+89kZkKhUaDqbtCObtAObtCMbazvyTU0hcz/fyZ6DR457f51WqUk8v3gzBXkZ5Oel0zk3jdSk5kdwNyaa2wGCKT6Tgq8n9OaSR9F4SwLRLpxtQ00t3FMnnGM3IlVKquO+6MqSSvrLRvrj7qCR3hpufhiA/VXVzFi0if99b8Mx4yoEOHjkKJPddf512melUpCXTn5ehus2N52CvHRX4shNJz2l8aQRze0AwRSxNgURSQSWAltV9QIRaQ28ABQCm4DxqrqvqX2EZZoLhzQGmhAJ5/Qkja414RbuNoVIT82ycia8csuxY3sAEpJh3KPHfA7e6ufPL+rEjvIqtpZVUrKvkq37KinZd6j+8fbySqprjj2/tclMcScNV6LolJNGpxxXKaNTTjoL15fy+7lfOrIdIJgcOfeRiNwBFAPZ7qTwW2Cvqk4TkclAnqr+oql9OGruIxOdwtng22gHB1wn4nBfcIRwISGfPdzdNcanoSAkpppaZVdFlTtZVLqTxaH6BLK1rJLDDcZYpCQm0CEnlU7Z6XTMSaNTThodc9LomJ1GB/dtu6xUkhOje4iX4xqaRaQAOB94ELjDvfki4Cz3/RnA+0CTScHEuWCU4sLZNtRoG1WEeqw5YWqWykYqA4JQfZeYIHTKSadTTjrFhcc/r6rsPXiE7e7SxvaySrbvr2J7WRU7yqtYsaWMt1ZXHTcdiAi0yUylQ3YqHbPTaJ+dRvusVDq4b9tnp9I+K422rVJIisLkEak2hT8BdwFZHts6qOp2AFXdLiLtIxKZiQ7BrA8PV9tQmBbuiap4IpiYRIQ2rVJp0yqVfvk5Xl+jquw7VM328kp27q9i5/7D7CivYleFK3Fs37mdFesq2aOtvOzfVV3VLstVumjXKtV1m5VK21YptGuVStusVNq2SiU3PZmEhOCuhdFSYU8KInIBsEtVl4nIWS14/w3ADQBdu3YNcnQmakRjl06n9VhzQjxOSExNEBFaZ6bQOjOFkzs3SBx1FyaplVRrIrvJYWdiR3YV/5xdrYvZVXGY0orDlFZUUXrgCBt2VlBaUUl17fEn/6QE13HauhNHm1au+20yU9yJK4W2mam0bpVCm8wUn9bJaPHvHO42BRF5CLgGOAqkAdnALGAocJa7lNAJeF9Vm2z2tzaFOOaE+nATHNHamcPfhvqVM9FXJ1FencBuzaFUc9id2I7SvtexO7svuw8cZveBI+w+cJg97tuGbR51MlISuWhgZx66pKhFoTuqTUFVpwBTANwlhZ+r6tUi8ggwAZjmvn0l3LGZKOKE+nATHNHatdvf7szzHkCOVpIrkCsHOZFtwBrYuhHGH59EVJVDR2pcCeLgt4li78Ej7DlwhF4dj6+yCgYnjVOYBswUkYnAZuDyCMdjnMzh1Q4mDvh7YeJnEhERMlOTyExNomubjBYG6b+INo2r6vuqeoH7/h5VHa2qPd23XvqpGeNWNN7VbTSnCzZVuYkIf6c8byxZOKx066SSgjFN81b3bJMPmkjxt6E+Skq3lhRMdIj0lAzGeONPe4gTenv5wJKCiQ7R2AXVmIaioFE9+obbmfhkixoZExaWFEx0iJJGOmOinSUFEx0isLi9MfHIkoKJDtYF1ZiwsIZmEz2ioJHOmGhnJQVjjDH1LCkYY4ypZ0nBmHi3cqZrxs+pua7blTMjHZGJIGtTMCae2Uhx04CVFIyJZ02NFDdxyZKCMfHMRoqbBiwpGBPPbKS4acCSgjHxzEaKmwYsKRgTz2ykuGnAeh8ZE+9spLjxYCUFY4wx9SwpGGOMqWdJwRhjTD1LCsYYY+pZUjDGGFNPVDXSMbSYiJQC37Tw7W2B3UEMJ9Qs3tCJplghuuKNplghfuLtpqrtvD0R1UkhECKyVFWLIx2Hryze0ImmWCG64o2mWMHiBas+MsYY48GSgjHGmHrxnBQej3QAfrJ4QyeaYoXoijeaYgWLN37bFIwxxhwvnksKxhhjGrCkYIwxpl5cJAURSRORxSLymYh8LiK/cm9vLSLviMh6921epGOtIyKJIrJcRF5zP3ZyrJtEZJWIrBCRpe5tTo43V0ReFJG1IrJGRE53Yrwi0sv9mdb97BeRnzkx1joicrv7f2y1iDzn/t9zZLwicps7zs9F5GfubY6JVUSeEpFdIrLaY1uj8YnIFBHZICLrRGRMS48bF0kBOAyMUtUBwEDgXBE5DZgMzFPVnsA892OnuA1Y4/HYybECjFTVgR59pp0c75+Bt1S1NzAA1+fsuHhVdZ37Mx0IDAEOAS/jwFgBRCQfmAQUq2o/IBG4EgfGKyL9gB8Dp+D6DlwgIj1xVqzPAOc22OY1PhHpi+uzPtn9nkdFJLFFR1XVuPoBMoBPgVOBdUAn9/ZOwLpIx+eOpcD9Bx8FvObe5shY3fFsAto22ObIeIFsYCPuThZOj9cjvnOARU6OFcgHtgCtca3V8po7bsfFC1wOPOHx+F7gLqfFChQCqz0ee40PmAJM8Xjd28DpLTlmvJQU6qpjVgC7gHdU9b9AB1XdDuC+bR/JGD38CdcXtNZjm1NjBVBgrogsE5Eb3NucGu8JQCnwtLt67gkRycS58da5EnjOfd+RsarqVuB3wGZgO1CuqnNxZryrgTNFpI2IZADfA7rgzFg9NRZfXUKuU+Le5re4SQqqWqOuYngBcIq7+Og4InIBsEtVl0U6Fj8MV9XBwHnALSJyZqQDakISMBj4m6oOAg7igOqMpohICjAW+E+kY2mKu377IqA70BnIFJGrIxuVd6q6BngYeAd4C/gMOBrRoAIjXra1aLxB3CSFOqpaBryPq95tp4h0AnDf7opgaHWGA2NFZBPwPDBKRJ7FmbECoKrb3Le7cNV5n4Jz4y0BStwlRYAXcSUJp8YLrmT7qarudD92aqzfBTaqaqmqVgOzgGE4NF5VfVJVB6vqmcBeYD0OjdVDY/GV4Crp1CkAtrXkAHGRFESknYjkuu+n4/ryrgVeBSa4XzYBeCUyEX5LVaeoaoGqFuKqMnhPVa/GgbECiEimiGTV3cdVh7wah8arqjuALSLSy71pNPAFDo3X7ft8W3UEzo11M3CaiGSIiOD6bNfg0HhFpL37titwCa7P2JGxemgsvleBK0UkVUS6Az2BxS06QqQbfMLUWFMELAdW4jph3efe3gZXg+56923rSMfaIO6z+Lah2ZGx4qqj/8z98zlwj5Pjdcc2EFjq/j7MBvKcGi+ujhF7gByPbY6M1R3br3BdcK0G/gWkOjVeYCGuC4LPgNFO+2xxJantQDWuksDEpuID7gG+wtUYfV5Lj2vTXBhjjKkXF9VHxhhjfGNJwRhjTD1LCsYYY+pZUjDGGFPPkoIxxph6lhSMaYSI1DSYpTSkI59F5C0RKaubGdeYSEiKdADGOFiluqZGCZdHcI1LuDGMxzTmGFZSMMYPIpLjnq++l/vxcyLyY/f9v4nIUvFYs8O9fZOI/D8R+dj9/GAReVtEvhKRm+pep6rzgIqw/1LGeLCkYEzj0htUH12hquXArcAzInIlkKeq/3C//h51rSdRBHxHRIo89rVFVU/HNYr2GeAy4DTggbD9Nsb4wKqPjGmc1+ojVX1HRC4H/oprgZY6491Thyfhmuu+L66pNMA1Nw3AKqCVqlYAFSJSJSK56pqo0ZiIs5KCMX4SkQSgD1CJa0EZ3JOQ/RzXHDpFwOtAmsfbDrtvaz3u1z22izPjGJYUjPHf7bhm//w+8JSIJONa0e0gUC4iHXBNd21M1LErFGMal+5era/OW8BTwI+AU1S1QkQWAL9U1ftFZDmumWK/Bhb5ezARWQj0BlqJSAkwUVXfDvi3MMYPNkuqMcaYelZ9ZIwxpp4lBWOMMfUsKRhjjKlnScEYY0w9SwrGGGPqWVIwxhhTz5KCMcaYev8fhytrHR0vaBUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘图\n",
    "fig4 = plt.figure()\n",
    "passed = plt.scatter(data.loc[:,'Exam1'][mask],data.loc[:,\"Exam2\"][mask])\n",
    "failed = plt.scatter(data.loc[:,'Exam1'][~mask],data.loc[:,\"Exam2\"][~mask])\n",
    "\n",
    "plt.plot(X1_new,X2_new_boundary)\n",
    "\n",
    "plt.title(\"Exam1-Exam2\")\n",
    "plt.xlabel(\"Exam1\")\n",
    "plt.ylabel(\"Exam2\")\n",
    "plt.legend((passed,failed),('passed','failed'))\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "pycharm": {
     "is_executing": false,
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "name": "pycharm-bd849f12",
   "language": "python",
   "display_name": "PyCharm (Learning)"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}